# !/usr/bin/python
# -*- coding: utf-8 -*-
"""
@文件    :   students_valication.py
@时间    :   2022/05/26 10:21:24
@作者    :   YTNetMan
@版本    :   1.0
@邮箱    :   ytnetman@163.com
@版权    :   (C)Copyright 2022-2025
@分类    :   办公自动化
@功能    :   对表中数据进行 数据校验
            ​ Pandas 的 apply() 方法是用来调用一个函数(Python method)，让此函数对数据对象进行批量处理。
            Pandas 的很多对象都可以使用 apply() 来调用函数，
            如 Dataframe、Series、分组对象、各种时间序列等
            
            f" 格式化字符串
            
"""

import pandas as pd

#用try...except 来定义校验方法
# def score_valication(row):
#     try:
#         assert 0<=row.Score<=100
#     except:
#         print(f'#{row.ID} \t student {row.Name} has an invoid score {row.Score}')

#用if 来定义校验方法
def score_valication(row):
    if not 0<=row.Score<=100:
        print(f'#{row.ID} \t student {row.Name} has an invoid score {row.Score}')

#数据校验读取文件尽量保留默认索引，这样所有字段都能得到校验
students = pd.read_excel('./doc/Students_valication.xlsx')
#print(students)
#axis=1  从左到右 行校验
#axis=0  从上到下 列校验
students.apply(score_valication,axis=1)
